package com.ruoyi.aitcommon.utils;

import java.text.SimpleDateFormat;

public class IDGenUtils {
	/**
     * 18位末尾的数字id
     * volatile关键字,强制同步 线程内存和共享内存
     */
    private static volatile int Guid = 100;
 
    /**
     * 获取唯一id
     * synchronized关键字,多线程排队执行,不会并发执行
     * @return 唯一ID,长度18位的数字字符串
     * @throws
     */
    public static synchronized String getGuid()
    {
    	IDGenUtils.Guid += 1;
 
        long now = System.currentTimeMillis();
        //获取4位年份数字
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy");
        //获取时间戳
        String time = dateFormat.format(now);
        String info = now + "";
        //获取三位随机数
        //int ran=(int) ((Math.random()*9+1)*100);
        //要是一段时间内的数据量过大会有重复的情况，所以做以下修改
        int ran = 0;
        if (IDGenUtils.Guid > 999)
        {
        	IDGenUtils.Guid = 100;
        }
        ran = IDGenUtils.Guid;
 
        return time + info.substring(2, info.length()) + ran;
    }
    
    /**
     * 获取长度18位的Long型唯一ID
     * @return
     */
    public static Long getLongID() {
    	String id=getGuid();
    	Long lid=Long.parseLong(id);
    	return lid;
    }

}
